Load human genome split of samples, labeling with hs1..hs4. Output matrix.
Convert to common mouse genes. Re-load into object. Load mouse genome split of samples, labeling with ms1..ms4. Subset overlapping genes. Merge all 8. Normalize and scale. Show clusters labeled by cell; split by sample. Show nCount_RNA also. Determine significantly-different list mouse vs human
hs1.data=Read10X(data.dir="./hg19/S1/outs/filtered_feature_bc_matrix/")
hs2.data=Read10X(data.dir="./hg19/S2/outs/filtered_feature_bc_matrix/")
hs3.data=Read10X(data.dir="./hg19/S3/outs/filtered_feature_bc_matrix/")
hs4.data=Read10X(data.dir="./hg19/S4/outs/filtered_feature_bc_matrix/")
ms1.data=Read10X(data.dir="./mm10/S1/outs/filtered_feature_bc_matrix/")
ms2.data=Read10X(data.dir="./mm10/S2/outs/filtered_feature_bc_matrix/")
ms3.data=Read10X(data.dir="./mm10/S3/outs/filtered_feature_bc_matrix/")
ms4.data=Read10X(data.dir="./mm10/S4/outs/filtered_feature_bc_matrix/")
#some human gene symbols have underscores (but these are not in geneTrans).
#Substitute a dot so as not to raise an error.
rownames(hs1.data)=gsub("_",".",rownames(hs1.data))
rownames(hs2.data)=gsub("_",".",rownames(hs2.data))
rownames(hs3.data)=gsub("_",".",rownames(hs3.data))
rownames(hs4.data)=gsub("_",".",rownames(hs4.data))
#rename cells
colnames(x=hs1.data) <- paste('hs1',colnames(x=hs1.data),sep="_")
colnames(x=hs2.data) <- paste('hs2',colnames(x=hs2.data),sep="_")
colnames(x=hs3.data) <- paste('hs3',colnames(x=hs3.data),sep="_")
colnames(x=hs4.data) <- paste('hs4',colnames(x=hs4.data),sep="_")
colnames(x=ms1.data) <- paste('ms1',colnames(x=ms1.data),sep="_")
colnames(x=ms2.data) <- paste('ms2',colnames(x=ms2.data),sep="_")
colnames(x=ms3.data) <- paste('ms3',colnames(x=ms3.data),sep="_")
colnames(x=ms4.data) <- paste('ms4',colnames(x=ms4.data),sep="_")
#create objects
hs1=CreateSeuratObject(counts=hs1.data,project="MG",min.cells=5)
hs2=CreateSeuratObject(counts=hs2.data,project="MG",min.cells=5)
hs3=CreateSeuratObject(counts=hs3.data,project="MG",min.cells=5)
hs4=CreateSeuratObject(counts=hs4.data,project="MG",min.cells=5)
ms1=CreateSeuratObject(counts=ms1.data,project="MG",min.cells=5)
ms2=CreateSeuratObject(counts=ms2.data,project="MG",min.cells=5)
ms3=CreateSeuratObject(counts=ms3.data,project="MG",min.cells=5)
ms4=CreateSeuratObject(counts=ms4.data,project="MG",min.cells=5)
#Use https://satijalab.org/seurat/essential_commands.html
hg=merge(x=hs1,y=c(hs2,hs3,hs4),project="Hg")
mg=merge(x=ms1,y=c(ms2,ms3,ms4),project="Mg")
#at this point we don't need all the original sample objects--can re-create if needed
rm(hs1,hs2,hs3,hs4,hs1.data,hs2.data,hs3.data,hs4.data)
rm(ms1,ms2,ms3,ms4,ms1.data,ms2.data,ms3.data,ms4.data)
#summary of each object
print(hg)
## An object of class Seurat
## 13283 features across 16708 samples within 1 assay
## Active assay: RNA (13283 features)
print(mg)
## An object of class Seurat
## 17304 features across 29055 samples within 1 assay
## Active assay: RNA (17304 features)
Output raw data to data frame. Use conversion table (geneTrans) to translate human symbols to mouse symbols.
#load gene translation table
geneTrans=read.table("geneTrans.txt",sep=",",header=T,stringsAsFactors = F,row.names = 1)
mito.m=grep("^mt",rownames(mg),value=T)
mito.h=grep("^MT-",rownames(hg),value=T)
#turns out, these two vectors (n=13 each) are ordered and match, build an extended translation table
mitoTrans=data.frame(row.names = paste("mm10",mito.m,sep="_"),
Human.Symbol = mito.h,
Homologene_ID = rep(NA,13),
None = rep("yes",13),
Mouse.Symbol = mito.m,
hg19 = paste("hg19",mito.h,sep="_"),
mm10 = paste("mm10",mito.m,sep="_")
)
#extended translation table
xTrans = rbind(geneTrans,mitoTrans)
#extract human raw counts into table
hg.raw=GetAssayData(hg,slot="counts")
#subset rows in geneTrans (not necessary but simpler)
hg.raw=hg.raw[row.names(hg.raw) %in% xTrans$Human.Symbol,] #cut from 13283 to 11364 rows
#translate human symbols to mouse
hg.trans=merge(x=hg.raw,y=xTrans[,c(1,4)],by.x=0,by.y="Human.Symbol",all.x=T)
rownames(hg.trans)=hg.trans$Mouse.Symbol
hg.trans=hg.trans[,!(names(hg.trans) %in% c("Row.names","Mouse.Symbol"))]
#convert matrix back into Seurat object
hm=CreateSeuratObject(hg.trans,project="MG",min.cells=5)
#merge with mouse
hm=merge(x=hm,y=mg,project="HM")
#clean up objects no longer needed
rm(hg,mg,hg.raw,hg.trans,mito.m,mito.h)
#summarize merged object
print(hm)
## An object of class Seurat
## 17540 features across 45763 samples within 1 assay
## Active assay: RNA (17540 features)
Use standard workflow to calculate percent.mito (now all mouse symbols) and visualize by sample.
#filter and normalize merged object
mito.features=grep(pattern="^mt",x=rownames(x=hm),value=T)
percent.mito=Matrix::colSums(x=GetAssayData(object=hm,slot="counts")[mito.features,]) / Matrix::colSums(x=GetAssayData(object=hm,slot='counts'))
hm[['percent.mito']] = percent.mito
VlnPlot(object=hm,features=c("nFeature_RNA","nCount_RNA","percent.mito"),ncol=3)
FeatureScatter(object=hm,feature1 = "nCount_RNA",feature2 = "percent.mito")
FeatureScatter(object=hm,feature1 = "nCount_RNA",feature2 = "nFeature_RNA")
Print summary data before and after subsetting. Then normalize, find variable genes, and scale.
print(hm)
## An object of class Seurat
## 17540 features across 45763 samples within 1 assay
## Active assay: RNA (17540 features)
hm=subset(hm,nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mito < 0.05) #try > 100 & < 2500 & < .5
print(hm)
## An object of class Seurat
## 17540 features across 17825 samples within 1 assay
## Active assay: RNA (17540 features)
hm=NormalizeData(hm,normalization.method = "LogNormalize",scale.factor=1e4)
hm=FindVariableFeatures(hm,selection.method = 'mean.var.plot',mean.cutoff = c(0.0125,3),dispersion.cutoff = c(0.5,Inf)) #finds 4047 features
length(VariableFeatures(hm))
## [1] 4245
hm=ScaleData(hm,features=rownames(hm),vars.to.regress = c("nCount_RNA","percent.mito")) #this takes a while
## Regressing out nCount_RNA, percent.mito
## Scaling data matrix
Start with PCA and determine how many dimensions are informative.
hm=RunPCA(hm,features=VariableFeatures(hm),verbose=T)
## PC_ 1
## Positive: Meg3, Syt1, Epha5, Nrxn3, Meis2, Ahi1, Snap25, Grin2b, Scg5, Arpp21
## Atp1b1, Celf4, Ndrg4, Il1rapl1, Snhg11, Pcp4, Plppr4, Xist, Gpm6a, Pcsk2
## Grm5, Synpr, Camk2b, Gria3, Gad1, Ptn, Caly, Olig1, Myt1l, Atp1a2
## Negative: B2m, Cd74, C1qb, Rpl13a, Spp1, C1qc, C1qa, Rpl29, Cybb, Apoc1
## H2-Ea-ps, C3, Cx3cr1, Fcgr4, Ifi203, Sat1, P2ry13, Ms4a6b, H2-Eb1, Ier2
## Ccl3, Arl5a, Angptl7, Ms4a7, Dusp1, Glipr1, Folr2, Fos, Lilrb4a, Adam28
## PC_ 2
## Positive: Cd74, C1qb, C1qc, C1qa, Spp1, Apoc1, Cybb, H2-Ea-ps, C3, Cx3cr1
## Fcgr4, Rpl13a, Sat1, P2ry13, Ms4a6b, Rpl29, H2-Eb1, Angptl7, Arl5a, Ccl3
## Ms4a7, Glipr1, Folr2, Adam28, Lilrb4a, Mis18bp1, Rgs1, Tgoln2, Clec7a, Ptafr
## Negative: Ly6c1, Flt1, Slco1a4, Ly6a, Cldn5, Igfbp7, Id1, Itm2a, Pglyrp1, Bsg
## Ptprb, Abcb1a, Ctla2a, Egfl7, Adgrl4, Crip1, Klf2, Pecam1, Wfdc1, Spock2
## Cxcl12, Slc7a1, Ramp2, Hmcn1, Cyyr1, Pltp, Prom1, Ahnak, Foxq1, Sox17
## PC_ 3
## Positive: Syt1, Snap25, Meg3, Celf4, Ndrg4, Gad1, Camk2b, Grin2b, Snhg11, Atp2b1
## Nrxn3, Pcp4, Myt1l, Bcl11a, Plppr4, Tmsb10, Synpr, Ano3, Slc12a5, Atp1a3
## Arpp21, Gria3, Gad2, C1qtnf4, Pcsk2, Nrip3, Baiap2, Syp, Epha5, Syt6
## Negative: Atp1a2, Slc1a2, Gja1, Clu, Car2, Ptn, Qk, Cryab, Id4, Cxcl14
## Sox9, Cnp, Rorb, Slc7a10, Acsl3, Gstm5, Aqp4, Cldn11, Mobp, Slc6a11
## Hes5, Ermn, Slc4a4, Mog, Tspan2, Ppp1r14a, Scrg1, Vegfa, Fjx1, Slc6a1
## PC_ 4
## Positive: Gja1, Slc1a2, Atp1a2, Id4, Clu, Cxcl14, Sox9, Slc4a4, Rorb, Chchd10
## Id2, Slc7a10, Gpm6a, Tmem47, Aqp4, Fjx1, Hes5, Slc6a11, Vegfa, Acsl3
## Rcn2, Lhx2, Slc6a1, Gstm5, Cdh2, Sox2, Id3, Rfx4, Itih3, Ezr
## Negative: Mobp, Cldn11, Ermn, Mog, Tspan2, Tubb4a, Cryab, Stmn4, Mal, Sept4
## Ppp1r14a, Mag, Opalin, Kctd13, Cnp, Tmeff2, Nkx6-2, Dixdc1, Kcna1, Ptprd
## Efnb3, Stmn1, Epb41l3, Slc24a2, Edil3, Mbp, Ppp1r16b, Slain1, Anln, Aspa
## PC_ 5
## Positive: Spp1, Cd74, C3, H2-Ea-ps, Ifi203, Arl5a, Apoc1, Fcgr4, Cybb, Ptn
## Adam28, Folr2, Lilrb4a, H2-Eb1, Glipr1, Tgoln2, Mis18bp1, Clec7a, Rpl29, Tpm1
## Ch25h, Naip1, Gja1, Acsl3, Olig1, Vsig4, Rnase1, Gimap4, Ms4a7, Atp1a2
## Negative: Hexb, Ctss, Fyb, Ctsd, Cd52, Siglech, Lyz2, Selplg, Cx3cr1, C1qa
## C1qc, Rhoh, Rps27rt, P2ry6, Ccl12, C1qb, Eef1g, Adap2os, Wdr89, Rgs2
## Rpl10-ps3, Fcrls, Cd72, Gm11361, Junb, Ccrl2, Il1b, Ms4a6c, Tnfrsf13b, Gm10073
print(hm[['pca']],dims=1:5,nfeatures=5,projected=F)
## PC_ 1
## Positive: Meg3, Syt1, Epha5, Nrxn3, Meis2
## Negative: B2m, Cd74, C1qb, Rpl13a, Spp1
## PC_ 2
## Positive: Cd74, C1qb, C1qc, C1qa, Spp1
## Negative: Ly6c1, Flt1, Slco1a4, Ly6a, Cldn5
## PC_ 3
## Positive: Syt1, Snap25, Meg3, Celf4, Ndrg4
## Negative: Atp1a2, Slc1a2, Gja1, Clu, Car2
## PC_ 4
## Positive: Gja1, Slc1a2, Atp1a2, Id4, Clu
## Negative: Mobp, Cldn11, Ermn, Mog, Tspan2
## PC_ 5
## Positive: Spp1, Cd74, C3, H2-Ea-ps, Ifi203
## Negative: Hexb, Ctss, Fyb, Ctsd, Cd52
VizDimLoadings(hm,dims=1:2)
DimPlot(hm)
hm=ProjectDim(hm)
## PC_ 1
## Positive: Gria2, Meg3, Pcsk1n, Scd2, Syt1, Dclk1, Epha5, Nrxn3, Meis2, Ahi1
## Snap25, Grin2b, Nrxn1, Dlgap1, Scg5, Arpp21, Ank2, Atp1b1, Celf4, Stmn3
## Negative: B2m, Tyrobp, Cd74, C1qb, Rpl13a, Spp1, Aif1, C1qc, C1qa, Ftl1
## Tmsb4x, Gpx1, Rpl29, Lst1, Cyba, Cybb, Apoc1, H2-Ea-ps, Laptm5, C3
## PC_ 2
## Positive: Tyrobp, Cd74, C1qb, C1qc, C1qa, Spp1, Aif1, Apoc1, Cybb, Lst1
## H2-Ea-ps, C3, Cx3cr1, Laptm5, Fcgr4, Gpr34, Alox5ap, Rpl13a, Sat1, Fcer1g
## Negative: Ly6c1, Flt1, Slco1a4, Ly6a, Cldn5, Igfbp7, Id1, Itm2a, Pglyrp1, Bsg
## Ptprb, Abcb1a, Ctla2a, Adgrf5, Egfl7, Adgrl4, Ablim1, Crip1, Sox18, Klf2
## PC_ 3
## Positive: Syt1, Snap25, Meg3, Mef2c, Celf4, Ndrg4, Gad1, Camk2b, Grin2b, Snhg11
## Atp2b1, Nrxn3, Pcp4, Myt1l, Bcl11a, Plppr4, Pcp4l1, Stmn3, Tmsb10, Synpr
## Negative: Plpp3, Atp1a2, Aldoc, Slc1a2, Gja1, Scd2, Tsc22d4, Prdx6, Ntsr2, Clu
## Slc1a3, Csrp1, Car2, Gpr37l1, Mt1, Mfge8, Mt2, Glul, F3, Pantr1
## PC_ 4
## Positive: Gja1, Slc1a2, Mt3, Mt2, Atp1a2, Id4, Aldoc, Plpp3, Sparcl1, Slc1a3
## Ntsr2, Clu, S1pr1, Cxcl14, Sox9, Prdx6, Atp1b2, Ptprz1, Gm3764, Mfge8
## Negative: Plp1, Mobp, Cldn11, Ermn, Mog, Tspan2, Tubb4a, Cryab, Stmn4, Mal
## Sept4, Ppp1r14a, Mag, Opalin, Tmem88b, Ugt8a, Kctd13, Cnp, Tmeff2, Nkx6-2
## PC_ 5
## Positive: Spp1, Cd74, Neat1, C3, H2-Ea-ps, Ifi203, Arl5a, Apoc1, Gpm6b, Fcgr4
## A2m, Cybb, Ptn, Adam28, H2-DMb1, Fcgrt, Folr2, Lilrb4a, Ptprz1, Htra1
## Negative: Hexb, Ctss, Fyb, Ctsd, Cd52, Siglech, Rnase4, Rpl17, Vsir, Cd300c2
## Lgmn, Tmem119, Fcgr3, Rps17, Lyz2, Selplg, Ctsz, Mafb, Rack1, Ptpn18
DimHeatmap(hm,dims=1,cells=500,balanced=T)
DimHeatmap(hm,dims=1:6,cells=500,balanced=T)
hm=JackStraw(hm,num.replicate=100)
hm=ScoreJackStraw(hm,dims=1:20)
JackStrawPlot(hm,dims=1:20)
## Warning: Removed 59420 rows containing missing values (geom_point).
ElbowPlot(hm)
#start clustering
hm=FindNeighbors(hm,dims=1:13) #adjust dims based on plots
## Computing nearest neighbor graph
## Computing SNN
hm=FindClusters(hm,resolution=0.2)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
##
## Number of nodes: 17825
## Number of edges: 643011
##
## Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.9763
## Number of communities: 17
## Elapsed time: 5 seconds
table(Idents(hm))
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
## 2237 1905 1662 1655 1542 1524 1056 1035 1010 997 982 549 529 486 364
## 15 16
## 247 45
hm=RunTSNE(hm,dims=1:13)
DimPlot(hm,reduction='tsne')
DimPlot(hm,reduction='tsne',split.by='orig.ident')
FeaturePlot(hm,features='Spp1')
FeaturePlot(hm,features='Hexb')
FeaturePlot(hm,features='nCount_RNA')
hm=RunUMAP(hm,dims = 1:13)
DimPlot(hm,reduction='umap')
FeaturePlot(hm,features='Spp1')
FeaturePlot(hm,features='Hexb')
#FeaturePlot(hm,features='nCount_RNA',split.by='orig.ident')
FeaturePlot(hm,features='nCount_RNA')
Use top 2 genes from prior clustering to do this, following
hm.markers=FindAllMarkers(hm,only.pos=T,min.pct = .25,logfc.threshold = .25)
## Calculating cluster 0
## Calculating cluster 1
## Calculating cluster 2
## Calculating cluster 3
## Calculating cluster 4
## Calculating cluster 5
## Calculating cluster 6
## Calculating cluster 7
## Calculating cluster 8
## Calculating cluster 9
## Calculating cluster 10
## Calculating cluster 11
## Calculating cluster 12
## Calculating cluster 13
## Calculating cluster 14
## Calculating cluster 15
## Calculating cluster 16
hm.markers %>% group_by(cluster) %>% top_n(10,avg_logFC)
## # A tibble: 170 x 7
## # Groups: cluster [17]
## p_val avg_logFC pct.1 pct.2 p_val_adj cluster gene
## <dbl> <dbl> <dbl> <dbl> <dbl> <fct> <chr>
## 1 0 2.81 0.992 0.262 0 0 Mt1
## 2 0 2.76 0.948 0.075 0 0 Aldoc
## 3 0 2.63 0.937 0.066 0 0 Plpp3
## 4 0 2.59 0.889 0.057 0 0 Clu
## 5 0 2.42 0.971 0.163 0 0 Slc1a3
## 6 0 2.41 0.848 0.039 0 0 Ntsr2
## 7 0 2.29 0.758 0.038 0 0 Mfge8
## 8 0 2.27 0.983 0.138 0 0 Atp1a2
## 9 0 2.26 0.908 0.116 0 0 Prdx6
## 10 0 2.22 0.781 0.049 0 0 Gm3764
## # … with 160 more rows
hm.markers %>% group_by(cluster) %>% top_n(5,avg_logFC) %>% write.csv("Top 5 per cluster.csv",row.names = F)
hm.markers %>% group_by(cluster) %>% top_n(5,avg_logFC) %>% as.data.frame %>% paged_table
Use Spp1 and Hexb to identify cluster number for human and mouse microglia, respectively.
humClus=as.character(subset(hm.markers,gene=="Spp1")$cluster)
print(humClus)
## [1] "1"
musClus=as.character(subset(hm.markers,gene=="Hexb")$cluster)
print(musClus)
## [1] "3" "8" "16"
diffGenes=FindMarkers(hm,ident.1=humClus,ident.2=musClus,min.pct=0.1)
table(sig=diffGenes$p_val_adj <= 0.05, twofold=abs(diffGenes$avg_logFC) >= 1)
## twofold
## sig FALSE TRUE
## FALSE 51 0
## TRUE 1134 182
diffGenes %>% tibble::rownames_to_column() %>% filter(p_val_adj <= 0.05) %>% filter(abs(avg_logFC) >= 1) %>% paged_table
saveRDS(diffGenes,"each_genome_diffGenes.rds")
write.table(as.data.frame(diffGenes),"each_genome_diffGenes.csv.txt",sep=",",quote=T)
hm.mean=AverageExpression(hm)
## Finished averaging RNA for cluster 0
## Finished averaging RNA for cluster 1
## Finished averaging RNA for cluster 2
## Finished averaging RNA for cluster 3
## Finished averaging RNA for cluster 4
## Finished averaging RNA for cluster 5
## Finished averaging RNA for cluster 6
## Finished averaging RNA for cluster 7
## Finished averaging RNA for cluster 8
## Finished averaging RNA for cluster 9
## Finished averaging RNA for cluster 10
## Finished averaging RNA for cluster 11
## Finished averaging RNA for cluster 12
## Finished averaging RNA for cluster 13
## Finished averaging RNA for cluster 14
## Finished averaging RNA for cluster 15
## Finished averaging RNA for cluster 16
head(hm.mean$RNA)
## 0 1 2 3 4 5
## A1bg 0.00000000 0.56305489 0.00000000 0.000000000 0.00000000 0.000000000
## A2m 0.11128453 5.14825347 0.04222694 0.004824921 0.05201140 0.292002607
## Aaas 0.02865456 0.11695458 0.07615790 0.051055974 0.15252326 0.095749236
## Aacs 0.19356584 0.03811685 0.01334112 0.047633146 0.00000000 0.020241924
## Aagab 0.10126996 0.07900196 0.00000000 0.275244651 0.01123814 0.005730725
## Aak1 0.55694807 1.93896481 0.16098873 0.306200938 0.30789077 0.198415564
## 6 7 8 9 10 11
## A1bg 0.00000000 0.00000000 0.019375714 0.00000000 0.00000000 0.013180128
## A2m 0.01282256 0.04333931 0.056720859 0.02003860 0.09848819 1.024299489
## Aaas 0.07652078 0.09078195 0.047276461 0.01794212 0.02609782 0.060312343
## Aacs 0.03237385 0.02673466 0.000000000 0.04105902 0.01137799 0.003974457
## Aagab 0.11363978 0.04796781 0.003255834 0.10641353 0.01200756 0.053667109
## Aak1 0.50280820 0.45042991 0.096336922 1.32870780 0.07713375 0.161762042
## 12 13 14 15 16
## A1bg 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
## A2m 0.02855496 0.08707676 1.00022286 0.01003366 0.06499626
## Aaas 0.08066259 0.06116061 0.00000000 0.06733763 0.08547009
## Aacs 0.04049259 0.05985941 0.02504332 0.00000000 0.00000000
## Aagab 0.12772428 0.02056898 0.06477716 0.02372387 0.00000000
## Aak1 0.34711018 0.53488229 0.24607410 0.40490546 0.65197454
write.csv(hm.mean$RNA,"hm cluster averages.csv.txt")
#stash idents
hm[["old.ident"]]=Idents(hm)
#get vector of cell idents
all.cells=Cells(hm)
#split by species
hg.cells=grep("^h",all.cells,value=T)
mm.cells=grep("^m",all.cells,value=T)
#apply new idents
Idents(hm,cells=hg.cells)="Human"
Idents(hm,cells=mm.cells)="Mouse"
table(hm$orig.ident,Idents(hm))
##
## Mouse Human
## hs1 0 2419
## hs2 0 1463
## hs3 0 2633
## hs4 0 2912
## ms1 1921 0
## ms2 842 0
## ms3 3530 0
## ms4 2105 0
DimPlot(hm,label=T,repel=T,label.size=8,reduction = "tsne")+NoLegend()
FeaturePlot(hm,features='nCount_RNA',reduction = "tsne")
FeaturePlot(hm,features='nCount_RNA',reduction = "tsne",split.by="ident")
sessionInfo()
## R version 3.5.3 (2019-03-11)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.2 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3
## LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] rmarkdown_1.12 dplyr_0.8.0.1 Seurat_3.0.0.9000
##
## loaded via a namespace (and not attached):
## [1] nlme_3.1-137 tsne_0.1-3 bitops_1.0-6
## [4] RColorBrewer_1.1-2 httr_1.4.0 tools_3.5.3
## [7] utf8_1.1.4 R6_2.4.0 irlba_2.3.3
## [10] KernSmooth_2.23-15 lazyeval_0.2.2 colorspace_1.4-1
## [13] npsurv_0.4-0 withr_2.1.2 tidyselect_0.2.5
## [16] compiler_3.5.3 cli_1.1.0 plotly_4.9.0
## [19] labeling_0.3 caTools_1.17.1.2 scales_1.0.0
## [22] lmtest_0.9-36 ggridges_0.5.1 pbapply_1.4-0
## [25] stringr_1.4.0 digest_0.6.18 R.utils_2.8.0
## [28] pkgconfig_2.0.2 htmltools_0.3.6 bibtex_0.4.2
## [31] htmlwidgets_1.3 rlang_0.3.4 zoo_1.8-5
## [34] jsonlite_1.6 ica_1.0-2 gtools_3.8.1
## [37] R.oo_1.22.0 magrittr_1.5 Matrix_1.2-17
## [40] Rcpp_1.0.1 munsell_0.5.0 fansi_0.4.0
## [43] ape_5.3 reticulate_1.12 R.methodsS3_1.7.1
## [46] stringi_1.4.3 yaml_2.2.0 gbRd_0.4-11
## [49] MASS_7.3-51.1 gplots_3.0.1.1 Rtsne_0.15
## [52] plyr_1.8.4 grid_3.5.3 parallel_3.5.3
## [55] gdata_2.18.0 listenv_0.7.0 ggrepel_0.8.0
## [58] crayon_1.3.4 lattice_0.20-38 cowplot_0.9.4
## [61] splines_3.5.3 SDMTools_1.1-221 knitr_1.22
## [64] pillar_1.3.1 igraph_1.2.4 future.apply_1.2.0
## [67] codetools_0.2-16 glue_1.3.1 evaluate_0.13
## [70] lsei_1.2-0 metap_1.1 data.table_1.12.2
## [73] png_0.1-7 Rdpack_0.11-0 gtable_0.3.0
## [76] RANN_2.6.1 purrr_0.3.2 tidyr_0.8.3
## [79] future_1.12.0 assertthat_0.2.1 ggplot2_3.1.1
## [82] xfun_0.6 rsvd_1.0.0 survival_2.43-3
## [85] viridisLite_0.3.0 tibble_2.1.1 cluster_2.0.8
## [88] globals_0.12.4 fitdistrplus_1.0-14 ROCR_1.0-7